package cn.zswltech.gruul.api;

import cn.zswltech.gruul.common.dto.*;
import cn.zswltech.gruul.common.result.Response;
import cn.zswltech.gruul.common.entity.CustomTreeDO;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author Jim
 * @version 1.0.0
 * @descripition:
 * @date 2024/1/17 10:05
 */
//@FeignClient("gruul")
@RequestMapping("solution")
public interface CustomerTreeApi {

    /**
     * 分组排序
     * @param req
     * @return
     * @throws Exception
     */
    @PostMapping("group/sort")
    Response groupSort(@RequestBody GroupSortREQ req);

    /**
     * 分组下的菜单排序
     * @param req
     * @return
     * @throws Exception
     */
    @PostMapping("menu/sort")
    Response menuSort(@RequestBody MenuSortREQ req);

    /**
     * 获取全部分组下的菜单
     *
     * @return
     * @throws Exception
     */
    @GetMapping
    Response<List<CustomTreeDO>> getCustomTreeList();

//    /**
//     * 创建分组
//     *
//     * @return
//     * @throws Exception
//     */
//    @PostMapping("/group")
//    Response menuGroupAdd();

    /**
     * 更新分组
     *
     * @return
     * @throws Exception
     */
    @PutMapping("/group")
    Response updateCustomTreeGroup();

    /**
     * 删除分组
     *
     * @return
     * @throws Exception
     *
     */
    @DeleteMapping("/group")
    Response deleteCustomTreeGroup(@PathVariable("id") Long id);

    /**
     * 自定义分组关联菜单
     *
     * @param params
     * @return
     * @throws Exception
     */
    @PostMapping("menu")
    Response createCustomTreeMenu(String params);

    /**
     * 门户权限-应用菜单树
     * @return 菜单树
     */
    @PostMapping("/menu/tree")
    Response<List<MenuTreeInfo>> appMenuTree();

    /**
     * 门户权限-新增菜单分组
     * @param req 菜单分组内容
     * @return
     */
    @PostMapping("/menugroup/add")
    Response addMenuGroup(@RequestBody MenuGroupAddREQ req);

    /**
     * 门户权限-修改菜单分组
     * @param req 菜单分组内容
     * @return
     */
    @PostMapping("/menugroup/update")
    Response updateMenuGroup(@RequestBody MenuGroupUpdateREQ req);

    /**
     * 门户权限-删除菜单分组
     * @param req 分组id
     * @return
     */
    @PostMapping("/menugroup/del")
    Response delMenuGroup(@RequestBody MenuGroupDelREQ req);


}
